using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

/// <summary>
/// 游戏结束UI管理器，处理游戏结束界面的返回主菜单和退出游戏功能
/// </summary>
public class GameOverUI : MonoBehaviour
{
    [Header("按钮引用")]
    [Tooltip("返回主菜单按钮")]
    public Button mainMenuButton;

    [Tooltip("退出游戏按钮")]
    public Button quitButton;

    [Header("场景设置")]
    [Tooltip("主菜单场景名称，默认为'开始界面'")]
    public string mainMenuSceneName = "开始界面";

    private void Awake()
    {
        // 绑定按钮事件
        BindButtonEvents();
    }

    /// <summary>
    /// 绑定按钮点击事件
    /// </summary>
    private void BindButtonEvents()
    {
        if (mainMenuButton != null)
        {
            mainMenuButton.onClick.AddListener(OnMainMenuButtonClicked);
        }
        else
        {
            Debug.LogError("GameOverUI: 未分配mainMenuButton，请在Inspector中指定返回主菜单按钮");
        }

        if (quitButton != null)
        {
            quitButton.onClick.AddListener(OnQuitButtonClicked);
        }
        else
        {
            Debug.LogError("GameOverUI: 未分配quitButton，请在Inspector中指定退出游戏按钮");
        }
    }

    /// <summary>
    /// 返回主菜单按钮点击事件处理
    /// </summary>
    private void OnMainMenuButtonClicked()
    {
        if (string.IsNullOrEmpty(mainMenuSceneName))
        {
            Debug.LogError("GameOverUI: 主菜单场景名称未设置，请在Inspector中指定mainMenuSceneName");
            return;
        }

        // 确保时间恢复正常
        Time.timeScale = 1f;
        // 加载主菜单场景
        SceneManager.LoadScene(mainMenuSceneName);
        Debug.LogFormat("跳转到主菜单场景: {0}", mainMenuSceneName);
    }

    /// <summary>
    /// 退出游戏按钮点击事件处理
    /// </summary>
    private void OnQuitButtonClicked()
    {
        // 确保时间恢复正常
        Time.timeScale = 1f;

        // 在编辑器中退出播放模式，在构建版本中退出应用
#if UNITY_EDITOR
        UnityEditor.EditorApplication.isPlaying = false;
#else
        Application.Quit();
#endif

        Debug.Log("游戏已退出");
    }

    /// <summary>
    /// 编辑器模式下验证参数
    /// </summary>
    private void OnValidate()
    {
        if (string.IsNullOrEmpty(mainMenuSceneName))
        {
            Debug.LogWarning("GameOverUI: 主菜单场景名称未设置");
        }
    }
}

/// <summary>
/// 使用说明：
/// 1. 将此脚本挂载到游戏结束界面的UI根对象上
/// 2. 在Inspector面板中设置以下参数：
///    - mainMenuButton: 拖拽返回主菜单按钮到该字段
///    - quitButton: 拖拽退出游戏按钮到该字段
///    - mainMenuSceneName: 设置主菜单场景名称（默认为"开始界面"）
/// 3. 确保主菜单场景已添加到Build Settings中的Scenes In Build列表
/// 4. 当游戏结束时，显示此UI面板即可激活功能
/// 
/// 功能说明：
/// - 点击返回主菜单按钮：加载指定的主菜单场景
/// - 点击退出游戏按钮：退出应用程序（编辑器中停止播放模式）
/// </summary>